//api文件夹用于存放对后台请求的代码
import axios from 'axios'//导入axios
import { ElMessage } from 'element-plus';
import router from '@/router';
import { useTokenStore } from '@/stores/token.js';//使用store
//返回自定义配置新建一个axios实例
const service = axios.create({
    baseURL: 'http://localhost:8080'
});

//Axios的请求拦截器
service.interceptors.request.use(function (config) {
    const tokenStore = useTokenStore();
    //如果不是登入请求就要在请求头中添加token
    if (!config.url.startsWith("/login")) {
        //将store中的token放到请求头之中
        config.headers.token = tokenStore.tokenStr;
    }
    return config;
}, function (error) {
    //对请求错误做写什么
    return Promise.reject(error);
})


//Axios的响应拦截器
service.interceptors.response.use(resp => {
    const tokenStore = useTokenStore();
    //console.log(resp);
    
    //生成新的jwt
    let token=resp.headers.token;
    //将jwt放到store的响求头之中
    //sessionStorage.setItem("token",token);
    tokenStore.update(token);

    return resp.data;
}, error => {
    //console.log(error.status);
    if (error.status == 403) {
        ElMessage.error({
            message: '令牌错误,请重新登入',
            duration: 1200,
            onClose: () => {//提示信息消失时的回调
                //删除sessionStorageItem中的token
                //sessionStorage.removeItem('token');
                //将store中的token设置为处置null
                const tokenStore = useTokenStore();
                tokenStore.$reset
                //跳转到登入页
                router.push('/login');
            }
        });
    }
});

export default service;//新建实例导出